package ProblemaOptimizacion;

import Base.Cromosoma;

public class CromosomaF3 extends Cromosoma {

	final static double minX = -3;
	final static double maxX = 12.1;
	final static double minY = 4.1;
	final static double maxY = 5.8;
	int longitud;
	
	public CromosomaF3(double tolerancia,int numGenes){
		super(tolerancia,numGenes);
		crearGenes();
		crearGen(0,minX,maxX);
		crearGen(1,minY,maxY);
		this.longitud = getLongitud();
		super.setLongitud(longitud);
	}
	
	public CromosomaF3(double tolerancia,int numGenes,int longitud){
		super(tolerancia,numGenes);
		this.longitud = longitud;
		super.setLongitud(longitud);
		crearGenes();	
	}
	
	public boolean equals(Object c){
		return this == c;
	}
	
	public void inicializacion(){
		for(int i=0;i<numGenes;i++){
			genes[i].inicializacion();
		}	
	}
	
	public String toStringCod(){
		double[] fenotipo = getFenotipo();
		return "(" + fenotipo[0] + " , " + fenotipo[1] + ")";
	}
	
	public CromosomaF3 clone(){
		CromosomaF3 c = new CromosomaF3(super.getTolerancia(),super.getNumGenes(),super.getLongitud());
		for (int i=0;i<c.getNumGenes();i++)
			c.setGen(i, getGen(i).clone());
		c.setFenotipo(super.getFenotipo().clone());
		c.setF(super.getF());
		c.setfAdaptada(super.getfAdaptada());
		//c.setPuntuacion(super.getPuntuacion());
		//c.setPuntuacion_acu(super.getPuntuacion_acu());
		return c;
	}
	
	public boolean inicializarValores(){
		double[] fen = new double[super.getNumGenes()];
		fen[0] = getGen(0).bin_dec();
		fen[1] = getGen(1).bin_dec();
		super.setFenotipo(fen);
		double f = Funcion.f3(fen[0],fen[1]);
		super.setF(f);
		return f<0;
	}
	
}
